Django তে Password Hashing এবং Data Encryption নিরাপত্তা নিশ্চিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ। যেখানে Password Hashing ইউজারের পাসওয়ার্ড নিরাপদভাবে সংরক্ষণ করতে ব্যবহৃত হয়, Data Encryption ব্যবহারকারীর গোপন তথ্য সুরক্ষিত রাখতে সহায়তা করে। Django এই দুই ফিচারই সহজভাবে ইনটিগ্রেট করতে পারে।
Password Hashing in Django
Password Hashing হলো পাসওয়ার্ডের একটি একমুখী কোড তৈরি করার প্রক্রিয়া, যাতে পাসওয়ার্ড সরাসরি ডেটাবেসে সংরক্ষিত না হয়ে হ্যাশ হিসেবে সংরক্ষিত হয়। এটি একটি নিরাপদ প্র্যাকটিস কারণ পাসওয়ার্ডের আসল মান কখনোই ডেটাবেসে সংরক্ষিত হয় না।
১. Django তে Password Hashing
Django তে পাসওয়ার্ড হ্যাশিং স্বয়ংক্রিয়ভাবে django.contrib.auth মডিউল ব্যবহার করে। Django এ হ্যাশিং পাসওয়ার্ড make_random_password অথবা set_password মেথডের মাধ্যমে করা হয়। যখন একটি ইউজার পাসওয়ার্ড সেট করে, Django সেটিকে হ্যাশ করে এবং ডেটাবেসে সংরক্ষণ করে।
২. পাসওয়ার্ড হ্যাশ করা
আপনি যখন ইউজারের পাসওয়ার্ড সেভ করেন, তখন Django সেটি হ্যাশ করে ডেটাবেসে সংরক্ষণ করে।
from django.contrib.auth.models import User
# নতুন ইউজার তৈরি
user = User.objects.create_user(username='john', password='password123')
# পাসওয়ার্ড হ্যাশ করা
user.set_password('new_password') # পাসওয়ার্ড হ্যাশ করা
user.save()
এখানে:
create_user(): এটি একটি নতুন ইউজার তৈরি করে এবং ইউজারের পাসওয়ার্ডকে স্বয়ংক্রিয়ভাবে হ্যাশ করে ডেটাবেসে সংরক্ষণ করে।set_password(): এটি একটি ইউজারের পাসওয়ার্ড হ্যাশ করতে ব্যবহৃত হয়।
৩. পাসওয়ার্ড যাচাই করা
যখন ব্যবহারকারী লগইন করতে চায়, তখন check_password() মেথড ব্যবহার করে হ্যাশ করা পাসওয়ার্ড যাচাই করা হয়।
user = User.objects.get(username='john')
# পাসওয়ার্ড যাচাই করা
if user.check_password('password123'):
print("Password is correct!")
else:
print("Incorrect password!")
এখানে:
check_password(): এটি ইনপুট পাসওয়ার্ডটি হ্যাশ করা পাসওয়ার্ডের সঙ্গে মেলানোর কাজ করে।
Data Encryption in Django
Data Encryption বা ডেটা এনক্রিপশন হল ডেটাকে এক ধরনের কোডে রূপান্তরিত করার প্রক্রিয়া, যাতে ডেটা শুধু অনুমোদিত ব্যবহারকারীর কাছে উপলব্ধ থাকে। Django তে ডেটা এনক্রিপশন সাধারণত সিকিউরিটি এবং প্রাইভেসি নিশ্চিত করার জন্য ব্যবহৃত হয়।
১. Django তে ডেটা এনক্রিপশন
Django তে ডেটা এনক্রিপশন করার জন্য আপনি বিভিন্ন পদ্ধতি ব্যবহার করতে পারেন, যেমন Fernet বা cryptography লাইব্রেরি ব্যবহার করে। Django 3.1 থেকে django-encrypted-model-fields প্যাকেজ ব্যবহার করে মডেল ফিল্ডগুলির জন্য এনক্রিপশন চালু করা যায়।
২. Cryptography লাইব্রেরি ব্যবহার করে এনক্রিপশন
cryptography লাইব্রেরি ব্যবহার করে সাধারণ ডেটা এনক্রিপশন করা যেতে পারে:
pip install cryptography
এখন, একটি ফাইল বা ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য কোড:
from cryptography.fernet import Fernet
# একটি Key জেনারেট করা
key = Fernet.generate_key()
cipher_suite = Fernet(key)
# ডেটা এনক্রিপ্ট করা
text = "This is a secret message"
cipher_text = cipher_suite.encrypt(text.encode())
# ডেটা ডিক্রিপ্ট করা
plain_text = cipher_suite.decrypt(cipher_text).decode()
print(f"Cipher Text: {cipher_text}")
print(f"Decrypted Text: {plain_text}")
এখানে:
Fernet.generate_key(): একটি নতুন এনক্রিপশন কীগুলি তৈরি করে।cipher_suite.encrypt(): ডেটা এনক্রিপ্ট করে।cipher_suite.decrypt(): এনক্রিপ্ট করা ডেটাকে ডিক্রিপ্ট করে।
৩. Django তে ডেটা এনক্রিপ্ট করা মডেল ফিল্ডের মাধ্যমে
Django মডেলে এনক্রিপ্ট করা ডেটা সংরক্ষণ করতে django-encrypted-model-fields প্যাকেজটি ব্যবহার করা যেতে পারে। প্রথমে ইনস্টল করতে হবে:
pip install django-encrypted-model-fields
এখন, এটি ব্যবহার করে একটি এনক্রিপ্টেড মডেল তৈরি করা যায়:
from encrypted_model_fields.fields import EncryptedCharField
from django.db import models
class SecureData(models.Model):
sensitive_info = EncryptedCharField(max_length=255)
এখানে:
EncryptedCharField: এটি একটি বিশেষ ফিল্ড যা ডেটাকে এনক্রিপ্ট করে এবং ডিক্রিপ্ট করে যখন প্রয়োজন হয়।
Django তে পাসওয়ার্ড হ্যাশিং এবং ডেটা এনক্রিপশনের নিরাপত্তা
- পাসওয়ার্ড হ্যাশিং: Django তে পাসওয়ার্ড হ্যাশ করা হয় যাতে পাসওয়ার্ড সরাসরি ডেটাবেসে না থাকে। এটি নিরাপত্তা বৃদ্ধি করে এবং পাসওয়ার্ডের সুরক্ষা নিশ্চিত করে।
- ডেটা এনক্রিপশন: গোপন তথ্য, যেমন ইউজারের ব্যক্তিগত ডেটা বা ফিনান্সিয়াল ডেটা এনক্রিপ্ট করে সংরক্ষণ করা হয়, যাতে অবৈধ ব্যক্তি সেই তথ্য অ্যাক্সেস না করতে পারে।
সারাংশ
- Password Hashing: Django তে পাসওয়ার্ড হ্যাশিং স্বয়ংক্রিয়ভাবে পরিচালনা করা হয়, যেখানে পাসওয়ার্ড সরাসরি ডেটাবেসে সংরক্ষণ করা হয় না।
- Data Encryption: Django তে ডেটা এনক্রিপশন করার জন্য আপনি
cryptographyলাইব্রেরি বাdjango-encrypted-model-fieldsব্যবহার করতে পারেন, যা ডেটাকে নিরাপদে সঞ্চয় করতে সাহায্য করে।
এই ফিচারগুলো আপনার Django অ্যাপ্লিকেশনকে নিরাপদ করে এবং ব্যবহারকারীর তথ্যের গোপনীয়তা নিশ্চিত করতে সাহায্য করে।